package com.zjl.legendary.controller;

import com.zjl.legendary.entity.User;
import com.zjl.legendary.entity.UserTask;
import com.zjl.legendary.service.intf.UserTaskService;
import com.zjl.legendary.util.BeanUtils;
import com.zjl.legendary.util.StrUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;

/**
 * @author zhoujingluo
 * @date 2021/6/14 11:25
 */
@Controller
@RequestMapping("/api/task")
public class UserTaskController {
    @Autowired
    private UserTaskService userTaskService;

    /**
     * 展示任务列表（仅展示当前用户添加的任务）
     * @param req 请求
     * @return 响应结果
     */
    @RequestMapping("/show.do")
    public String show(HttpServletRequest req){
        Integer uid;
        try {
            //获取用户id，获取失败重定向到任务展示页面
            User user = (User) req.getSession().getAttribute("user");
            uid = user.getId();
        } catch (Exception e) {
            return "redirect:/safety/usertasklist.jsp";
        }
        //根据用户id查询任务
        List<UserTask> tlist = userTaskService.query(uid);

        //判断是否是查询今天的任务
        if ("today".equals(req.getParameter("day"))){
            tlist = userTaskService.query(uid,new Date());
            req.setAttribute("day","today");
        }

        req.setAttribute("tlist",tlist);
        //带着任务信息转发到任务展示页面
        return "forward:/safety/usertasklist.jsp";
    }

    /**
     * 新增用户任务
     * @param req 请求
     * @return 响应结果
     */
    @RequestMapping("/add.do")
    public String add(HttpServletRequest req){
        //用户未登录则重定向到登录页面
        if (!StrUtils.isNotNull(req.getParameter("uid"))){
            return "redirect:/login.jsp";
        }
        //收参并封装任务
        UserTask task = BeanUtils.parseBean(req, UserTask.class);
        if (userTaskService.addTask(task)){
            //保存成功则带着任务信息跳转到添加任务详情页面
            //由于需要为任务详情页面提供试题信息，所以不能直接跳转
            //应先查询题库，然后带着题库集合跳转到添加任务详情页面
            //中间的请求并非只有一次，因此需要将任务信息存储到session域对象中
            req.getSession().setAttribute("task",task);
            return "redirect:/api/question/showForTask.do";
        } else {
            //任务添加失败，则跳转到添加任务页面
            return "redirect:/safety/usertaskadd.jsp";
        }
    }
}
